package admin

import (
	"github.com/kataras/iris/v12"
	"huanteng/vendors/paginate"
	"huanteng/web/helpers"
	"huanteng/web/services"
)

type RoleController struct {
	Service *services.RoleService
}


// @Summary 创建角色
// @title 翟玉进
// @Description 创建角色,角色名称不能为空
// @Tags 角色管理
// @Accept json
// @Produce  json
// @Param name body string true "名称"
// @Param parent_id body string true "父亲id 默认0"
// @Param memo body string true "备注说明"
// @Param sequence body string true "排序默认0 0最大"
// @Success 0 {string} json "{"code":0,"data":"name","msg":"success"}"
// @Router /admin/role [Post]
func (r *RoleController)Post(ctx iris.Context) *helpers.Response {

	model,err:=r.Service.Create(ctx)
	if err!=nil{
		return helpers.FailedMsg(err.Error())
	}

	return helpers.SuccessData(model)

}
// @Summary 角色列表
// @title 翟玉进
// @Description 角色列表
// @Tags 角色管理
// @Accept json
// @Produce  json
// @Param name body string true "名称"
// @Param parent_id body string true "父亲id 默认0"
// @Param memo body string true "备注说明"
// @Param sequence body string true "排序默认0 0最大"
// @Success 0 {string} json "{"code":0,"data":"name","msg":"success"}"
// @Router /admin/role [Get]
func(r *RoleController) Get(ctx iris.Context)*helpers.Response {

	r.Service.RoleList(ctx)
	return helpers.SuccessData(paginate.Page)
}


// @Summary 查看角色
// @title 翟玉进
// @Description 查看角色
// @Tags 角色管理
// @Accept json
// @Produce  json
// @Param name body string true "名称"
// @Param parent_id body string true "父亲id 默认0"
// @Param memo body string true "备注说明"
// @Param sequence body string true "排序默认0 0最大"
// @Success 0 {string} json "{"code":0,"data":"name","msg":"success"}"
// @Router /admin/role/{id} [Get]
func(r *RoleController) GetBy(id uint)*helpers.Response {

	return helpers.SuccessData(r.Service.GetByid(id))
}


// @Summary 查看角色
// @title 翟玉进
// @Description 查看角色
// @Tags 角色管理
// @Accept json
// @Produce  json
// @Param name body string true "名称"
// @Param parent_id body string true "父亲id 默认0"
// @Param memo body string true "备注说明"
// @Param sequence body string true "排序默认0 0最大"
// @Success 0 {string} json "{"code":0,"data":"name","msg":"success"}"
// @Router /admin/role [Put]
func(r *RoleController) Put(ctx iris.Context)*helpers.Response {
	if err:=r.Service.Update(ctx);err!=nil{
		return helpers.FailedMsg(err.Error())
	}
	return helpers.SuccessMsg()
}


// @Summary 删除角色
// @title 翟玉进
// @Description 删除角色 可批量删除 例如：[1,2,3]
// @Tags 角色管理
// @Accept json
// @Produce  json
// @Param body body int true "json格式[1,2,3]"
// @Success 0 {string} json "{"code":0,"data":"name","msg":"success"}"
// @Router /admin/role [Delete]
func (r *RoleController) Delete(ctx iris.Context)*helpers.Response {
		err:=r.Service.Delete(ctx)
		if err!=nil{
			return helpers.FailedMsg(err.Error())
		}
	return helpers.SuccessMsg()

}


// @Summary 设置角色菜单权限
// @title 翟玉进
// @Description  菜单可以传入菜单数组例如:[1,2,3]
// @Tags 角色管理
// @Accept json
// @Produce  json
// @Param body body int true "json格式[1,2,3]"
// @Success 0 {string} json "{"code":0,"data":"name","msg":"success"}"
// @Router /admin/role/{id}/menu [Post]
func (r *RoleController) PostByMenu(id uint,ctx iris.Context)*helpers.Response {
	err:=r.Service.RoleSetMenu(id,ctx)
	if err!=nil{
		return helpers.FailedMsg(err.Error())
	}
	return helpers.SuccessMsg()

}

// @Summary 获取所有角色
// @title 翟玉进
// @Description  菜单可以传入菜单数组例如:[1,2,3]
// @Tags 角色管理
// @Accept json
// @Produce  json
// @Param body body int true "json格式[1,2,3]"
// @Success 0 {string} json "{"code":0,"data":"name","msg":"success"}"
// @Router /admin/role/list [get]
func (r *RoleController) GetList()*helpers.Response {

	return helpers.SuccessData(r.Service.AllRole())

}



// @Summary 角色设置
// @title 翟玉进
// @Description  管理员角色设置
// @Tags 角色管理
// @Accept json
// @Produce  json
// @Param body body int true "json格式[1,2,3]"
// @Success 0 {string} json "{"code":0,"data":"name","msg":"success"}"
// @Router /admin/role/{id}/set [post]
func (a *RoleController)PostBySet(id uint,ctx iris.Context) *helpers.Response {
	if err:=a.Service.SetRole(id,ctx);err!=nil{
		return helpers.FailedMsg(err.Error())
	}
	return helpers.SuccessMsg()

}

// @Summary 获取角色菜单
// @title 翟玉进
// @Description  获取角色的菜单
// @Tags 角色管理
// @Accept json
// @Produce  json
// @Param body body int true "json格式[1,2,3]"
// @Success 0 {string} json "{"code":0,"data":"name","msg":"success"}"
// @Router /admin/role/menu/{id} [post]
func (a *RoleController)GetByMenu(id uint)*helpers.Response  {

	return helpers.SuccessData(a.Service.GetMenuById(id))
}

